package com.zp.self.module.level_4_算法练习.数据结构.二叉树;

/**
 * @author By ZengPeng
 */
public class 力扣_700_二叉搜索树中的搜索 {
    //测试
    public static void main(String[] args) {

        System.out.println(new 力扣_700_二叉搜索树中的搜索().searchBST(TreeNode.initRoot(),1));
    }

    /**
    题目：给定二叉搜索树（BST）的根节点 root 和一个整数值 val。
     你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在，则返回 null 。

     示例 1:
     输入：root = [4,2,7,1,3], val = 2
     输出：[2,1,3]

     示例 2:
     输入：root = [4,2,7,1,3], val = 5
     输出：[]

    分析：【P 💜】
       1.递归3步曲：单步操作，终止条件，返回值
            --执行用时：0 ms, 在所有 Java 提交中击败了100.00%的用户

    边界值 & 注意点：
       1.
     **/
    public TreeNode searchBST(TreeNode root, int val) {
        if(root.val==val)return root;
        if(root.left!=null){
            TreeNode treeNode = searchBST(root.left, val);
            if(treeNode!=null)return treeNode;
        }
        if(root.right!=null){
            TreeNode treeNode = searchBST(root.right, val);
            if(treeNode!=null)
                return treeNode;
        }
        return null;
    }
}
